package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.AccKeepAccount;
import com.softer.wxzj.entity.SettleAccounts;
import com.softer.wxzj.entity.base.BaseEntity;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

/**
 * RefPayInfoService class
 *
 * @author wxr
 * @date 2019/7/1
 */
public interface AccKeepAccountService extends BaseService<AccKeepAccount> {

    /**
     * 交易信息查询列表
     *
     * @param accKeepAccount
     * @return
     */
    PageInfo<AccKeepAccount> getTransInfoList(Page page, AccKeepAccount accKeepAccount);

    /**
     * 查询业务编号
     *
     * @return
     */
    List<AccKeepAccount> getPayNo();

    /**
     * 点击验证
     *
     * @param id
     * @return
     */
    AccKeepAccount getInfoById(String id, String verificationTime);

    /**
     * 查询详情
     *
     * @param id
     * @return
     */
    AccKeepAccount getListInfo(String id);

    CommonResult reverse(String id);

    PageInfo<AccKeepAccount> getListByBankCodeAndTallyTime(Page page, AccKeepAccount accKeepAccount, String fuzzy);

    CommonResult check(String ids, String state, String arcType);

    /**
     * 结算日期
     *
     * @param bankCode
     * @return
     */
    String tallyTime(String bankCode);

    /**
     * 日终核对列表
     *
     * @param settleAccounts
     * @return
     */

    PageInfo<SettleAccounts> getCountList(Page page, SettleAccounts settleAccounts);

    BaseEntity addSelect();

    /**
     * 查询是否有未核对的数据
     *
     * @param bankCode
     * @param tallyTime
     * @return
     */
    CommonResult selectState(String bankCode, String tallyTime);

    /**
     * 日终核对---批量结算查询收入支付 （金额，笔数）
     *
     * @param bankCode       银行id
     * @param tallyTimeStart 开始时间（结算时间）
     * @param tallyTimeEnd   结算时间（最大当天时间）
     * @return 返回  SettleAccounts 实体
     */
    SettleAccounts batchSettlementInquiry(String bankCode, String tallyTimeStart, String tallyTimeEnd);

    /**
     * 日终核对---批量结算--确定结算
     * 更改承办银行的结算日期
     *
     * @param bankCode       银行id
     * @param tallyTimeStart 开始时间（结算时间）
     * @param tallyTimeEnd   结算时间（最大当天时间）
     * @return 返回  CommonResult
     */
    CommonResult settlement(String bankCode, String tallyTimeStart, String tallyTimeEnd);
}
